package com.zheng.study.base.service;

import com.zheng.study.base.entity.MongoEntity;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;

import java.io.Serializable;
import java.util.List;

/**
 * mongodb Service接口基类
 * ============================================================================
 * author : fallenpanda
 * createDate:  2016-07-19 。
 * ============================================================================
 */
public interface MongoBaseService<T extends MongoEntity, PK extends Serializable> {

	/**
	 * 通过条件查询实体(集合)
	 */
	List<T> find(Query query) ;

	/**
	 * 通过一定的条件查询一个实体
	 */
	T findOne(Query query) ;

	/**
	 * 通过条件查询更新数据
	 */
	void update(Query query, Update update) ;

	/**
	 * 保存一个对象到mongodb
	 */
	T save(T entity) ;

	/**
	 * 通过ID获取记录
	 */
	T findById(String id) ;

	/**
	 * 通过ID获取记录,并且指定了集合名(表的意思)
	 */
	T findById(String id, String collectionName) ;

	/**
	 * 求数据总和
	 */
	long count(Query query);

}
